package com.example.pmanagesys.mapper;

import com.example.pmanagesys.controller.dto.UserDto;
import com.example.pmanagesys.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;

@Mapper  //@Mapper 将Bean注入到springboot容器
public interface UserMapper {

    // 新增数据
    @Insert("insert into sys_user(z_name,password,phone,address,joined_date,department,position,role,username) " +
            "VALUES (#{z_name},#{password},#{phone},#{address},#{joined_date},#{department}, #{position}, #{role},#{username})")
    int insert(User user);

    // 修改数据 通过mapper的UserMapper.xml的标签的方式
    int update(User user);

    // 删除数据
    @Delete("delete from sys_user where id = #{id}")
    int deleteById(@Param("id") Integer id);

    // 查询某一页的数据 ,分页
    // @Param是MyBatis所提供的(org.apache.ibatis.annotations.Param)，作为Dao层的注解，作用是用于传递参数，从而可以与SQL中的的字段名相对应，一般在2=<参数数<=5时使用最佳.
    List<User> selectPage(@Param("pageNum") Integer pageNum,
                          @Param("pageSize") Integer pageSize,
                          @Param("z_name") String z_name,
                          @Param("id") String id,
                          @Param("address") String address,
                          @Param("create_time") String create_time,
                          @Param("username") String username);

    // 查询总条数
    Integer selectTotal(@Param("z_name") String z_name,
                        @Param("id") String id,
                        @Param("address") String address,
                        @Param("create_time") String create_time,
                        @Param("username") String username);

    // 批量删除
    Integer deleteBatchByIds(@Param("ids") List<Integer> ids);

    // 登录  /  与查询当前用户共用一个
    @Select("select * from sys_user  where username = #{username} and password = #{password} and userState='true' ")
    User findOne(UserDto userDTO);

    // 查询当前用户
    @Select("select * from sys_user  where username = #{username}")
    List<User> findNow(@Param("username") String username);

    //  查询所有员工名字
    @Select("select z_name from sys_user")
    List<String> findUserName();
}
